/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.tomasio.projects.welcome.model;

import com.tomasio.projects.welcome.dto.AutorizacaoDeAcessoColetivaDTO;
import com.tomasio.projects.welcome.dto.AutorizacaoDeAcessoIndividualDTO;
import com.tomasio.projects.welcome.dto.GrupoAutorizacaoDeAcessoDTO;
import java.util.HashSet;
import java.util.Set;

/**
 *
 * @author administrador
 */
public class GrupoAutorizacaoDeAcesso {
    private Long id;
    private String descricao;
    private Periodo periodo;
    private String documento;

    public String getDocumento() {
        return documento;
    }

    public void setDocumento(String documento) {
        this.documento = documento;
    }
    
    private Set<AutorizacaoDeAcessoColetiva> autorizacoesDeAcesso =
            new HashSet<AutorizacaoDeAcessoColetiva>();

    public GrupoAutorizacaoDeAcesso() {
    }

   
    public void fill(GrupoAutorizacaoDeAcessoDTO dto){
         if (dto != null) {
            this.descricao = dto.getDescricao();
            this.id = dto.getId();
            this.periodo = new Periodo(dto.getPeriodo());
            this.documento = dto.getDocumento();
            for (AutorizacaoDeAcessoColetivaDTO autorizacaoDTO : dto.getAutorizacoesDeAcesso()) {
                AutorizacaoDeAcessoColetiva autorizacao = new AutorizacaoDeAcessoColetiva();
                autorizacao.fill(autorizacaoDTO);
                this.addAutorizacaoDeAcesso(autorizacao);
            }

        }
    }

    public Set<AutorizacaoDeAcessoColetiva> getAutorizacoesDeAcesso() {
        return autorizacoesDeAcesso;
    }

    public void setAutorizacoesDeAcesso(Set<AutorizacaoDeAcessoColetiva> autorizacoesDeAcesso) {
        this.autorizacoesDeAcesso = autorizacoesDeAcesso;
    }

    public void addAutorizacaoDeAcesso(AutorizacaoDeAcessoColetiva autorizacao){
        this.autorizacoesDeAcesso.add(autorizacao);
        autorizacao.setGrupo(this);
    }
    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Periodo getPeriodo() {
        return periodo;
    }

    public void setPeriodo(Periodo periodo) {
        this.periodo = periodo;
    }
    public GrupoAutorizacaoDeAcessoDTO createDTOWithoutAutorizacoes(){
        GrupoAutorizacaoDeAcessoDTO dto = new GrupoAutorizacaoDeAcessoDTO();
        dto.setDescricao(descricao);
        dto.setId(id);
        dto.setDocumento(documento);
        if(periodo != null){
            dto.setPeriodo(periodo.createDTO());
        }
        return dto;
    }
    public GrupoAutorizacaoDeAcessoDTO createDTO(){
        GrupoAutorizacaoDeAcessoDTO dto = createDTOWithoutAutorizacoes();
        Set<AutorizacaoDeAcessoColetivaDTO> autorizacoesDTO =
                new HashSet<AutorizacaoDeAcessoColetivaDTO>();
        for (AutorizacaoDeAcessoColetiva autorizacao : autorizacoesDeAcesso) {

            autorizacoesDTO.add(autorizacao.createDTO());

        }
        dto.setAutorizacoesDeAcesso(autorizacoesDTO);
        return dto;
    }



}
